<?php
/**
 * 后台菜单相关
 */
namespace Admin\Controller;
use Think\Controller;
use Think\Exception;

class MenuController extends CommonController {
    
    public function add(){
        if($_POST){
        	if(!isset($_POST['name']) || !$_POST['name']){
        		return show(0,'菜单名不能为空');
        	}
        	if(!isset($_POST['m']) || !$_POST['m']){
        		return show(0,'模块名不能为空');
        	}
        	if(!isset($_POST['c']) || !$_POST['c']){
        		return show(0,'控制器不能为空');
        	}
        	if(!isset($_POST['f']) || !$_POST['f']){
        		return show(0,'方法名不能为空');
        	}
            // 判断是否有meni_id，然后执行修改操作
        	if($_POST['menu_id']){
        		return $this->save($_POST);
        	}
            // 执行添加操作
        	$menuId = D('Menu')->insert($_POST);

           	if($menuId){
        		return show(1,'新增成功',$menuId);
        	}
        	return show(0,'新增失败',$menuId);
        }else{
        	$this->display();
        }
        //echo "welcome to singcms";
    }

    public function index() 
    {
    	$data = [];
        // 搜索功能 判断是否有前台后台的类型
    	if(isset($_REQUEST['type']) && in_array($_REQUEST['type'],[0,1])){
    		$data['type'] = intval($_REQUEST['type']);
    		$this->assign('type',$data['type']);
    	}else{
    		$this->assign('type',-1);
    	}
        // 分页操作
       	$page = $_REQUEST['p'] ? $_REQUEST['p'] : 1;
       	$pageSize = $_REQUEST['pageSize'] ? $_REQUEST['pageSize'] : 3;
       	$menus = D('Menu')->getMenus($data,$page,$pageSize);
       	// 
       	$menusCount = D('Menu')->getMenusCount($data);
       	$res = new \Think\Page($menusCount,$pageSize);
       	$pageRes = $res->show();
       	$this->assign('pageRes',$pageRes);
       	$this->assign('menus',$menus);
    	$this->display();
    }
    // 修改操作的显示
    public function edit()
    {
    	$menuId = $_GET['id'];
    	$menu = D('Menu')->find($menuId);
    	$this->assign('menu',$menu);
    	$this->display();
    }
    // 执行修改操作
    public function save($data)
    {
    	$menuId = $data['menu_id'];
    	unset($data['menu_id']);
    	try{
    		$id = D('Menu')->updateMenuById($menuId,$data);
    		if($id === false){
    			return show(0,'更新失败');
    		}
    		return show(1,'更新成功');
    	}catch(Exception $e){
    		return show(0,$e->getMessage());
    	}
    	
    }
    // 删除操作，即修改信息信息的状态
    public function setStatus()
    {
    	try {
            if ($_POST) {
                $id = $_POST['id'];
                $status = $_POST['status'];
                // 执行数据更新操作
                $res = D("Menu")->updateStatusById($id, $status);
                if ($res) {
                    return show(1, '操作成功');
                } else {
                    return show(0, '操作失败');
                }

            }
        }catch(Exception $e) {
            return show(0,$e->getMessage());
        }

        return show(0,'没有提交的数据');
    }
    // 排序操作
    public function listorder()
    {
    	$listorder = $_POST['listorder'];
        // 引导用户代理到当前页的前一页的地址
    	$jump_url = $_SERVER['HTTP_REFERER'];
    	$error = [];
    	if($listorder){
    		try{
    			foreach ($listorder as $menuId => $v) {
	    			// 执行更新排序
	    			$id = D('Menu')->updateMenuListorderById($menuId,$v);
	    			if($id === false){
	    				$errors[] = $menuId;
	    			}
	    		}	
    		}catch(Exception $e){
    			return show(0,$e->getMessage,['jump_url'=>$jump_url]);
    		}
    		if($errors){
    			return show(0,'排序失败—'.implode(',', $errors),['jump_url'=>$jump_url]);
    		}
    		return show(1,'排序成功',['jump_url'=>$jump_url]);
    	}
    	return show(0,'排序数据失败',['jump_url'=>$jump_url]);
    }
}